package com.baishui.beans;

import java.util.List;

/**
 * Bean的定义信息
 */
public interface BeanDefinition {

    /**
     * 获取类的路径信息
     * @return
     */
    String getBeanClassName();

    public static final String SCOPE_SINGLETON = "singleton";
    public static final String SCOPE_PROTOTYPE = "prototype";
    public static final String SCOPE_DEFAULT = "";

    /**
     * 是否单例
     * @return
     */
    public boolean isSingleton();

    /**
     * 是否原型
     * @return
     */
    public boolean isPrototype();

    /**
     * 获取scope信息
     * @return
     */
    String getScope();

    /**
     * 设置scope信息
     * @param scope
     */
    void setScope(String scope);

    /**
     * 一对多的关系
     * 描述bean中的property属性的
     * @return
     */
    public List<PropertyValue> getPropertyValues();

    /**
     *  描述 标签 constructor-arg
     * @return
     */
    public ConstructorArgument getConstructorArgument();

    public String getID();

    public boolean hasConstructorArgumentValues();

    public Class<?> resolveBeanClass(ClassLoader classLoader) throws ClassNotFoundException;
    public Class<?> getBeanClass() throws IllegalStateException ;
    public boolean hasBeanClass();

    public boolean isSynthetic();



}
